iT邦幫忙

2024 iThome 鐵人賽

DAY 18
1
Kubernetes

成為 Kubernetes 特級咒術師的 30 天修行系列 第 18

第十八篇:LangChain 的使用與 RAG 的結果

  • 分享至 

  • xImage
  •  

前言

經過這幾天的努力,我們已經把大部分的東西都準備好了,現在我們就要進行最後的整合啦~
首先,我們要了解一個重要的工具 → LangChain

LangChain

image

什麼是 LangChain?

LangChain 是一個框架,用於將 LLM 與各種功能模組(如資料檢索、Prompt 等)結合在一起,讓我們能夠快速構建基於 LLM 的應用程式。它專注於將多個步驟組合在一起,讓每個步驟中的輸入和輸出都可以靈活配置,從而實現更強大的功能,例如 RAG 等。

LangChain 的主要功能包括:

  1. 模組化設計:LangChain 把各個步驟抽象為模組,如「提示工程」、「語言模型執行」、「輸出解析」、「檢索模組」等,讓我們可以靈活組合、配置,並把各個模組串接起來形成一個處理鏈(Chain),也就是一個 pipeline。
  2. RAG:LangChain 支援將外部檢索到的資料(如文件、資料庫中的內容)與語言模型結合,以生成更具相關性的答案。
  3. 多步推理:LangChain 可以將問題分解成多個步驟來逐步解決,比如通過一個過程回答多個相關問題,或進行複雜的資料操作。

現在,我們就用實際的作法讓大家更加了解吧~

LangChain 的使用

我們在串接之前,先給一個 Prompt 的模板,好讓我們將整理好的資料傳給 LLM:

prompt_template = f"""{PROMPT}
        
# 參考的原始資料
{result}

# 使用者問題
Question: {user_question}"""

在這個模板中,我們依序放入了我們設置好的 PROMPT、原始資料(result)與使用者問題(user_question),在我們整理好後就可以透過 LangChain 來進行串接啦!

利用 LangChain 來進行串接:

chain = (
    {"result": lambda x: result, "question": RunnablePassthrough()}
    | ChatPromptTemplate.from_template(prompt_template)
    | llm
    | StrOutputParser()
)

在這段串接中:

  • 第一段:result 是前面檢索到的參考資料,透過 lambda x: content 傳遞進來。而 question 是使用者的問題,這裡使用了 RunnablePassthrough(),表示直接傳遞問題,不進行額外處理。
  • 第二段:將參考資料與問題進行格式化並生成最終的 Prompt。prompt_template 會將 result 和 user_question 依照指定的格式組合成一個提示,並將其傳遞給 LLM。
  • 第三段:llm 是實際執行語言模型的部分。LLM 會依據前面生成的提示,產生相應的文字回答。
  • 第四段:這個部分用來處理 LLM 的輸出。StrOutputParser() 將模型生成的回應轉換為純文字格式,便於進一步使用。

在我們串接完成後,就可以直接來進行問問題的環節啦!

RAG 的結果

我們直接設一個使用者問題(user_question),並且調用 invoke()來觸發 chain:

user_question = "請問什麼是量子計算?"
print(chain.invoke(user_question))

接下來,我們就可以得到 LLM 生成的回覆:

量子計算是一種利用量子力學原理進行計算的新型計算技術。與傳統計算機使用二進制比特不同,量子計算機使用量子比特(qubits),能夠在同時處於 0 和 1 的疊加狀態。這使得量子計算在某些問題上具有比經典計算更強大的計算能力,如因數分解和模擬分子結構。

theme: 量子計算

經歷過好幾天的努力,我們終於完成了一整個簡單的 RAG 問答系統啦!
接下來,我們就要將內容進行容器化後,部署上 Kubernetes 囉~


上一篇
第十七篇:LLM 的設置
下一篇
第十九篇:容器化與 Kubernetes 的部署
系列文
成為 Kubernetes 特級咒術師的 30 天修行30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言